package d12_homework.d1_firstquestion;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
//典型的面向对象思想,就是,你只是调用了存钱的方法,存钱不是你存的,是账户存的
public class Account {

    private String cardID;//卡号


    private int money;//余额

    //1、事实现存钱的功能,先实现,在考虑线程安全的问题
    //多线程的第一步: 就是的保证线程的安全
    public void saveAccount(int money) {
        //2、获取当前线程的名字,看现在是谁在进行存钱
        String name = Thread.currentThread().getName();

        //

        //5、实现线程安全,进行加同步代码块
        //这个this,就是代表唯一一个账户
        synchronized (this) {
            //3、对于余额进行修改
            this.money += money;

            //4、存钱成功,进行提示
            System.out.println(name + "存入" + money + "后" +",账户余额是" + this.money);
        }
    }
}
